package com.hk.mybatis.query;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.List;

/**
 * 分页查询结果。
 *
 * @param <T> 分页结果中元素的类型
 */
@Setter
@Getter
@NoArgsConstructor
public class PageResult<T> extends Result<List<T>> {

    /**
     * 当前页码
     */
    private long current;

    /**
     * 每页条数
     */
    private long size;

    /**
     * 总条数
     */
    private long total;

    /**
     * 初始化实例。
     *
     * @param page 分页结果
     */
    public PageResult(IPage<T> page) {
        initByPage(page);
    }

    public PageResult(long current, long size, long total, List<T> content) {
        this.current = current;
        this.size = size;
        this.total = total;
        this.setContent(content);
    }

    /**
     * 初始化实例。
     *
     * @param status  状态
     * @param message 消息
     * @param page    分页结果
     */
    public PageResult(int status, String message, IPage<T> page) {
        super(status, message);
        initByPage(page);
    }

    /**
     * 用{@link Page<T>}初始化结果
     *
     * @param page 页
     */
    private void initByPage(IPage<T> page) {
        setSize(page.getSize());
        setTotal(page.getTotal());
        setCurrent(page.getCurrent());
        setContent(page.getRecords());
    }
}
